home *** CD-ROM | disk | FTP | other *** search
- int STACKSIZE = 45;
-
- /* Quick Link Host Mode Script Version 1.0 */
- /* Copyright Smith Micro Software, Inc. (c) 1992 */
-
- int BaudRate;
-
- char FALSE = 0;
- char TRUE = 1;
- char CANCEL = -1;
-
- int MAX_FILE_LEN = 144;
- int HOST_TIMOUT;
-
- char DefaultProtocol;
- char CurrentDir[144];
- char StartupDir[144];
- char TempDir[144];
- char UserName[82];
- char userString[82];
-
- char host_timeout = FALSE;
- char host_continue;
- char security_level;
- char last_prompt;
- char ASCIITransComplete[] = "\r\nASCII transfer completed.\r\n";
- char ASCIITransCanceled[] = "\r\nASCII transfer completed.\r\n";
- char xTransComplete[] = "\r\nXmodem transfer completed.\r\n";
- char xTransCanceled[] = "\r\nXmodem transfer canceled.\r\n";
- char yTransComplete[] = "\r\nYmodem transfer completed.\r\n";
- char yTransCanceled[] = "\r\nYmodem transfer canceled.\r\n";
- char kTransComplete[] = "\r\nKermit transfer completed.\r\n";
- char kTransCanceled[] = "\r\nKermit transfer canceled.\r\n";
- char zTransComplete[] = "\r\nZmodem transfer completed.\r\n";
- char zTransCanceled[] = "\r\nZmodem transfer canceled.\r\n";
- char xyCancelPrompt[] = "\r\nPress Ctrl-X several times to cancel.\r\n";
- char thatSelection[] = "\r\nThe option you selected is not available to you.\r\n";
- char accessDenied[] = "\r\nAccess denied.\r\n";
- char tooLong[] = "\r\n\r\nYou took too long to respond.\r\n\r\nGoodbye!\r\n";
- char invalid[] = "\r\nInvalid selection.\r\n";
- char pleaseWaitProcessing[] = "\r\nPlease wait. Your request is being processed...\r\n";
-
- char *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
-
- HostOut(char *str)
- {
- Out(str);
- Echo(str);
- }
-
-
- ListProtocols()
- {
- HostOut("\r\nChoose a file transfer protocol...\r\n");
- HostOut("<1> ASCII <5> Ymodem\r\n");
- HostOut("<2> Xmodem <6> Ymodem-G\r\n");
- HostOut("<3> Xmodem CRC <7> Kermit/SuperKermit\r\n");
- HostOut("<4> Xmodem 1K <8> Zmodem\r\n");
- HostOut(" <ESC> cancels transfer\r\n");
- }
-
-
- SelectProtocol()
- {
- int rv;
-
- ListProtocols();
- DefaultProtocol = 0;
- PrintHostPrompt(3);
-
- rv = GetUserInput(userString, TRUE, HOST_TIMOUT);
- if (rv)
- {
- if ((userString[0] >= 49) && (userString[0] <= 56) && (!userString[1]))
- DefaultProtocol = userString[0] - 48;
- else
- rv = CANCEL;
- }
- else
- host_timeout = TRUE;
- return(rv);
- }
-
-
- GetFileName()
- {
- int rv;
-
- PrintHostPrompt(4);
- rv = GetUserInput(userString, TRUE, HOST_TIMOUT);
-
- if (rv == CANCEL)
- {
- return(CANCEL);
- }
- else if (rv == TRUE)
- {
- if (userString[0])
- {
- if ((Exists(userString)) == -1)
- {
- return(-2);
- }
- else
- {
- return(TRUE);
- }
- }
- }
- else
- host_timeout = TRUE;
- return(FALSE);
- }
-
-
- PutFileName()
- {
- int rv;
-
- PrintHostPrompt(4);
- rv = GetUserInput(userString, TRUE, HOST_TIMOUT);
-
- if (rv == CANCEL)
- {
- return(CANCEL);
- }
- else if (rv == TRUE)
- {
- if (userString[0])
- {
- if ((Exists(userString)) == -1)
- {
- return(TRUE);
- }
- else
- {
- return(FALSE);
- }
- }
- }
- else
- host_timeout = TRUE;
- return(FALSE);
- }
-
-
- GetMultipleFiles(char *fileName)
- {
- char ret = TRUE;
-
- if (fileName[0])
- AddFile(fileName);
-
- HostOut("\r\nSpecify multiple files, blank filename terminates list.\r\n");
-
- while ((ret == TRUE) && !host_timeout)
- {
- while ((ret = GetFileName()) == -2)
- HostOut("\r\nFile does not exist.\r\n");
-
- StrCpy(userString, fileName);
- if (fileName[0])
- AddFile(fileName);
- }
- }
-
-
- DownloadFiles()
- {
- int rv;
- char fileName[MAX_FILE_LEN];
-
- ClearList();
- HostOut("\r\nFile Download");
- if ((GetFileName() == TRUE) && !host_timeout)
- {
- StrCpy(userString, fileName);
- rv = SelectProtocol();
- if (rv == CANCEL)
- return(CANCEL);
- else if (rv == FALSE)
- return(host_timeout);
-
- if (DefaultProtocol == 1)
- {
- PrintHostPrompt(5);
- if (GetUserInput(userString, TRUE, HOST_TIMOUT))
- {
- if (Upload(1, fileName))
- HostOut(ASCIITransComplete);
- else
- HostOut(ASCIITransCanceled);
- }
- else
- {
- host_timeout = TRUE;
- }
- }
- else if ((DefaultProtocol == 2) || (DefaultProtocol == 3))
- {
- HostOut("\r\nBegin your Xmodem receive now.");
- HostOut(xyCancelPrompt);
- Wait(2);
- if (Upload(3, fileName))
- HostOut(xTransComplete);
- else
- HostOut(xTransCanceled);
- }
- else if (DefaultProtocol == 4)
- {
- HostOut("\r\nBegin your Xmodem 1K receive now.");
- HostOut(xyCancelPrompt);
- if (Upload(4, fileName))
- HostOut(xTransComplete);
- else
- HostOut(xTransCanceled);
- }
- else if ((DefaultProtocol == 5) || (DefaultProtocol == 6))
- {
-
- GetMultipleFiles(fileName);
- if (!host_timeout)
- {
- if (DefaultProtocol == 5)
- HostOut("\r\nBegin your Ymodem receive now.");
- else
- HostOut("\r\nBegin your Ymodem-G receive now.");
- HostOut(xyCancelPrompt);
- Wait(2);
- if (Upload(5))
- HostOut(yTransComplete);
- else
- HostOut(yTransCanceled);
-
- }
- }
- else if (DefaultProtocol == 7)
- {
- GetMultipleFiles(fileName);
- if (!host_timeout)
- {
- HostOut("\r\nBegin your Kermit/SuperKermit receive now.");
- HostOut(xyCancelPrompt);
- if (Upload(2))
- HostOut(kTransComplete);
- else
- HostOut(kTransCanceled);
- }
- }
- else if (DefaultProtocol == 8)
- {
- GetMultipleFiles(fileName);
- if (!host_timeout)
- {
- HostOut("\r\nBegin your Zmodem receive now.");
- HostOut(xyCancelPrompt);
- if (Upload(7))
- HostOut(zTransComplete);
- else
- HostOut(zTransCanceled);
- }
- }
- }
- else
- HostOut("\r\nFile does not exist.\r\n");
- }
-
-
- ListFiles()
- {
- PrintHostPrompt(6);
- if (GetUserInput(userString, TRUE, HOST_TIMOUT))
- {
- if (userString[1] == ':')
- {
- HostOut("\r\nCannot list files across drives.\r\n");
- return;
- }
- if (!userString[0])
- StrCpy("*.*", userString);
- DisplayFiles(userString, security_level);
- }
- else
- host_timeout = TRUE;
- }
-
-
- UploadFiles()
- {
- int file, i = 0, lines = 0, rv;
- char ch, buffer[80];
-
- Sprintf(buffer, "\r\nThere are %i000 bytes of available disk space on drive %c:\r\n", KBytesFree(CurrentDir[0]), CurrentDir[0]);
- HostOut(buffer);
-
- rv = SelectProtocol();
- if (rv == CANCEL)
- return(CANCEL);
- else if (rv == FALSE)
- return(host_timeout);
-
- if (DefaultProtocol == 1)
- {
- if (PutFileName() == TRUE)
- {
- HostOut("\r\nStart your ASCII send now.\r\nPress Ctrl-Z when complete.\r\n");
- rv = Download(1, userString);
- if (rv)
- HostOut(ASCIITransComplete);
- else
- HostOut(ASCIITransCanceled);
- }
- else
- {
- HostOut("\r\nFile already exists.\r\n");
- return(CANCEL);
- }
- }
- else if (DefaultProtocol == 2)
- {
- if (PutFileName() == TRUE)
- {
- HostOut("\r\nStart your Xmodem send now.");
- HostOut(xyCancelPrompt);
- Wait(2);
- rv = Download(3, userString);
- if (rv)
- HostOut(xTransComplete);
- else
- HostOut(xTransCanceled);
- }
- else
- {
- HostOut("\r\nFile already exists.\r\n");
- return(CANCEL);
- }
- }
- else if (DefaultProtocol == 3)
- {
- if (PutFileName() == TRUE)
- {
- HostOut("\r\nStart your Xmodem CRC send now.");
- HostOut(xyCancelPrompt);
- Wait(2);
- rv = Download(4, userString);
- if (rv)
- HostOut(xTransComplete);
- else
- HostOut(xTransCanceled);
- }
- else
- {
- HostOut("\r\nFile already exists.\r\n");
- return(CANCEL);
- }
- }
- else if (DefaultProtocol == 4)
- {
- if (PutFileName() == TRUE)
- {
- HostOut("\r\nStart your Xmodem 1K send now.");
- HostOut(xyCancelPrompt);
- Wait(2);
- rv = Download(5, userString);
- if (rv)
- HostOut(xTransComplete);
- else
- HostOut(xTransCanceled);
- }
- else
- {
- HostOut("\r\nFile already exists.\r\n");
- return(CANCEL);
- }
- }
- else if (DefaultProtocol == 5)
- {
- HostOut("\r\nStart your Ymodem send now.");
- HostOut(xyCancelPrompt);
- Wait(2);
- rv = Download(6);
- if (rv)
- HostOut(yTransComplete);
- else
- HostOut(yTransCanceled);
- }
- else if (DefaultProtocol == 6)
- {
- HostOut("\r\nStart your Ymodem-G send now.");
- HostOut(xyCancelPrompt);
- Wait(2);
- rv = Download(7);
- if (rv)
- HostOut(yTransComplete);
- else
- HostOut(yTransCanceled);
- }
- else if (DefaultProtocol == 7)
- {
- HostOut("\r\nStart your Kermit/SuperKermit send now.\r\n");
- rv = Download(2);
- if (rv)
- HostOut(kTransComplete);
- else
- HostOut(kTransCanceled);
-
- }
- else if (DefaultProtocol == 8)
- {
- HostOut("\r\nStart your Zmodem send now.\r\n");
- rv = Download(8);
- }
- return(rv);
- }
-
-
- ChangeDirectory()
- {
- char directory[85], oldDir[85];
- int i = 0, j, file;
-
- HostOut("\r\nCurrent path is: ");
- Echo(CurrentDir);
- OutBuffer(CurrentDir, StrLen(CurrentDir));
-
- HostOut("\r\n Change path to: ");
- if (GetUserInput(userString, TRUE, HOST_TIMOUT))
- {
- if (userString[0])
- {
- if (SetDirectory(userString))
- StrCpy(GetDirectory(), CurrentDir);
- else
- HostOut("\r\nCannot change to specified path.\r\n");
- }
- return(TRUE);
- }
- else
- {
- host_timeout = TRUE;
- return(FALSE);
- }
- }
-
-
- ChangeDrive()
- {
- int i = 0, j, file;
- char junk[3];
-
- HostOut("\r\nCurrent drive is: ");
-
- Copy(CurrentDir, junk, 2);
- junk[2] = 0;
- HostOut(junk);
-
- HostOut("\r\n Change drive to: ");
-
- if (GetUserInput(userString, TRUE, HOST_TIMOUT))
- {
- if (userString[0])
- {
- if (SetDrive(userString))
- StrCpy(GetDirectory(), CurrentDir);
- else
- HostOut("\r\nCannot change to specified drive.\r\n");
- }
- return(TRUE);
- }
- else
- {
- host_timeout = TRUE;
- return(FALSE);
- }
- }
-
-
- PrintHostPrompt(int prompt)
- {
- if (prompt)
- last_prompt = prompt;
- if (last_prompt == 1)
- {
- HostOut("\r\n<C>hange Drive <D>ownload <G>oodbye <H>elp <L>ist <M>ove <U>pload\r\n");
- HostOut("Enter selection <C,D,G,H,L,M,U>: ");
- }
- else if (last_prompt == 2)
- HostOut("\r\nEnter Password: ");
- else if (last_prompt == 3)
- HostOut("\r\nEnter Selection 1-8 or <ESC> to cancel: ");
- else if (last_prompt == 4)
- HostOut("\r\nFilename: ");
- else if (last_prompt == 5)
- HostOut("\r\nPress return to begin ASCII receive, <ESC> to cancel:\r\n");
- else if (last_prompt == 6)
- HostOut("\r\nEnter file search parameter (e.g. *.*). <ENTER> to search for all.\r\n->");
- else if (last_prompt == 7)
- HostOut("\r\nEnter Name: ");
- else if (last_prompt == 8)
- HostOut("\r\nAre you sure? <Y/N>: ");
- else if (last_prompt == 9)
- HostOut("\r\nEnter Sysop Password: ");
- }
-
-
- LogCall(char *UserName)
- {
- int hFile;
- char szLogLine[80];
-
- int year, month, day, dayofweek, hour, minute, second, hsecond;
-
- Time(&year, &month, &day, &dayofweek, &hour, &minute, &second, &hsecond);
- StrCpy(HomePath(), TempDir);
- StrCat(TempDir, "CALLERS.TXT");
- hFile = Open(TempDir, 1);
- Seek(hFile, 0, 2);
- Sprintf(szLogLine, "%-25s %s %i:%i\r\n", UserName, days[dayofweek], hour, minute);
- Write(hFile, szLogLine, StrLen(szLogLine));
- Close(hFile);
- }
-
-
- HostMainLoop()
- {
- char host_online = TRUE, rightpassword = FALSE;
-
- int start_time, i;
- int year, month, day, dayofweek, hour, minute, second, hsecond;
-
- start_time = Time(&year, &month, &day, &dayofweek, &hour, &minute, &second, &hsecond);
- while ((CarrierDetect()) && (host_online))
- {
- PrintHostPrompt(1);
- if ((i = GetUserInput(userString, TRUE, HOST_TIMOUT)) == TRUE)
- {
- if ((userString[0] == 'd') || (userString[0] == 'D'))
- {
- if (AllowDownloads())
- DownloadFiles();
- else
- HostOut(thatSelection);
- }
- else if ((userString[0] == 'g') || (userString[0] == 'G'))
- {
- PrintHostPrompt(8);
- if (GetUserInput(userString, TRUE, HOST_TIMOUT))
- {
- if ((userString[0] == 'y') || (userString[0] == 'Y'))
- {
- HostOut("\r\nGoodbye!\r\n");
- host_online = FALSE;
- }
- }
- else
- host_timeout = TRUE;
- }
- else if ((userString[0] == 'h') || (userString[0] == 'H') || (userString[0] == '?'))
- {
- StrCpy(HomePath(), TempDir);
- StrCat(TempDir, "HOSTHELP.TXT");
- if (!OutFile(TempDir))
- HostOut("\r\nNo help available.\r\n");
- }
- else if ((userString[0] == 'l') || (userString[0] == 'L'))
- {
- ListFiles();
- }
- else if ((userString[0] == 'u') || (userString[0] == 'U'))
- {
- if (AllowUploads())
- UploadFiles();
- else
- HostOut(thatSelection);
- }
- else if ((userString[0] == 'm') || (userString[0] == 'M'))
- {
- if (security_level > 1)
- ChangeDirectory();
- else
- HostOut(thatSelection);
- }
- else if ((userString[0] == 'c') || (userString[0] == 'C'))
- {
- if (security_level > 1)
- ChangeDrive();
- else
- HostOut(thatSelection);
- }
- else
- HostOut(invalid);
- }
- else if (i == 0)
- host_timeout = TRUE;
-
- if (host_timeout)
- {
- HostOut(tooLong);
- break;
- }
- }
- }
-
-
- main()
- {
- char ch, connect;
- int i;
- int nKey, FaxMgr;
-
- host_continue = TRUE;
- connect = FALSE;
- HOST_TIMOUT = (HostTimeout()*60);
-
- FaxMgr = CalledFromFaxMgr();
- if (!FaxMgr)
- {
- if (CarrierDetect())
- {
- Echo("\r\nWould you like to hangup the line? <Y/N>: ");
- if (!GetUserInput(userString, TRUE, HOST_TIMOUT))
- {
- HostOut(tooLong);
- return();
- }
- if ((userString[0] == 'Y') || (userString[0] == 'y'))
- {
- Wait(2);
- Hangup();
- }
- else if ((userString[0] == 'N') || (userString[0] == 'n'))
- {
- connect = TRUE;
- }
- }
-
- if (!connect)
- {
- if (HostSpeed())
- Baud(HostSpeed());
- Parity('N');
- Stop("1");
- Data(8);
- Out(HostInit());
- Out("\r");
- WaitFor("OK\r\n", 3);
- }
- }
- StrCpy(GetDirectory(), StartupDir);
-
- while (host_continue)
- {
- SetDrive(HostPath());
- SetDirectory(HostPath());
- StrCpy(GetDirectory(), CurrentDir);
-
- if (!FaxMgr)
- {
- if (!connect)
- {
- Echo("\r\nWaiting for call...\r\n");
- Echo("Press <ESC> to cancel or 'L' to logon locally: ");
- }
- }
- else
- FaxMgr = FALSE;
-
- while ((!connect) && (host_continue))
- {
- nKey = GetKeyStroke();
- if (nKey == -1)
- {
- Echo("\r\nHost mode canceled by operator\r\n");
- host_continue = FALSE;
- break;
- }
- if ((nKey == 'l') || (nKey == 'L'))
- {
- connect = TRUE;
- SetLocalHost(TRUE);
- Echo("\r\nEntering host mode locally.\r\n");
- }
- BaudRate = CallDetected();
- if (BaudRate == -1)
- {
- Echo("\r\nWaiting for call...\r\n");
- Echo("Press <ESC> to cancel or 'L' to logon locally: ");
- }
- else if (BaudRate)
- {
- Beep();
- LogonDelay();
- connect = TRUE;
- }
- }
- if (host_continue && connect)
- {
- PrintHostPrompt(7);
- if (!GetUserInput(UserName, TRUE, HOST_TIMOUT))
- {
- HostOut(tooLong);
- connect = FALSE;
- }
- else
- {
- LogCall(UserName);
- }
- }
- if (host_continue && UsePassword() && connect)
- {
- security_level = 0;
- HostOut("\r\n");
- for (i = 0; i < 4; i++)
- {
- PrintHostPrompt(2);
- if (GetUserInput(userString, FALSE, HOST_TIMOUT))
- {
- if (UseMovePassword())
- {
- if (!StrnCmpI(userString, Password(), StrLen(Password())))
- {
- security_level = 2;
- break;
- }
- }
- else
- {
- if (!StrnCmpI(userString, Password(), StrLen(Password())))
- {
- security_level = 1;
- break;
- }
- }
- }
- else
- {
- HostOut(tooLong);
- connect = FALSE;
- break;
- }
- HostOut("\r\nInvalid password, please try again.\r\n");
- }
- }
- else
- {
- if (UseMovePassword())
- security_level = 2;
- else
- security_level = 1;
- }
-
- if (host_continue && connect)
- {
- if (security_level)
- {
- StrCpy(HomePath(), TempDir);
- StrCat(TempDir, "HOSTMODE.TXT");
- OutFile(TempDir);
- userString[0] = 0;
- HostMainLoop();
- }
- else
- HostOut(accessDenied);
- }
- SetLocalHost(FALSE);
- if (CarrierDetect())
- {
- Wait(2);
- Hangup();
- }
- connect = FALSE;
- host_timeout = FALSE;
- }
- SetDrive(StartupDir);
- SetDirectory(StartupDir);
- }
-